#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct Body     //体检
{
 	int sno;             //学号 
	int age;        //年龄 
	int tall;       //身高 
	double weight;   //体重 
	double bust;        //胸围 
	char sname[20];         //姓名 
	char gender[3];        //性别 
    int data;        //日期 
    char department[20];     //部门   
}; 

struct ill      //病历
{
	int sno;       //学号 
	char sname[20];     //姓名 
	char gender[3];     //性别 
	char department[20];     //部门 
	char judge[30];        //诊断 
	int data;       //日期                        
};

struct Node_p
{
   Body data;
	Node_p *next;
}; 
struct Node_i
{
	ill data;
	Node_i*next;
};

Node_p *creatHead1 ();              //建立体检头节点
Node_i *creatHead2 ();              //建立病历头节点
void release1 (Node_p*);            //释放体检节点
void release2 (Node_i*);            //释放病历节点

void InputBody(Node_p*,int n);      //输入体检信息
void Inputill(Node_i*,int n );      //输入病历信息

Node_p* ReviseBodySno(Node_p*,int n);        //根据学号修改体检信息       
Node_i* ReviseIllSno(Node_i*,int n);         //根据学号修改病历信息
Node_p* DeleteBodySno(Node_p*);           //删除体检信息
Node_i* DeleteIllSno(Node_i*);            //删除病历信息

Node_p* FindBodySno(Node_p*);         //通过学号查询体检信息
Node_i* FindIllSno(Node_i*);          //通过学号查询病历信息

Node_p* CountBody(Node_p*);     //统计体检信息  
Node_p* CountBodyAge(Node_p*) ; //统计各个年龄的人数并求平均值 （体检） 
Node_p* CountBodyTall(Node_p*);   //统计各个身高的人数并求平均值（体检）
Node_p* CountBodyWeight(Node_p*) ;//统计各个体重的人数并求平均值（体检）
Node_p* CountBodyBust(Node_p*) ;//统计各个胸围的人数并求平均值（体检）

Node_i* CountIll(Node_i*);      //统计病历信息
Node_i* CountIll_improveJudge(Node_i*);      //统计各个病症每年增加的人数 
Node_i* CountIllGender(Node_i*);      //统计各个病症每年男女的人数   
Node_i* CountIll_addNumber(Node_i*) ;//统计各个病症年增长值 
Node_i* CountIll_addRate(Node_i*) ;//统计各个病症年增长率 
Node_i* CountIll_JudgeGender(Node_i*);
Node_i* CountIll_DepartmentGender(Node_i*);
Node_p* addAllBody(Node_p*,int n);       //录入保存体检信息    
Node_i* addAllill(Node_i*,int n);       //录入保存病历信息
void outPut(Node_p*);
void menu(Node_p*,Node_i*);     //主菜单
void menu1(Node_p*,Node_i*);    //输入信息页面
void menu2(Node_p*,Node_i*);  //修改信息页面
void menu3(Node_p*,Node_i*);  //删除信息页面
void menu4(Node_p*,Node_i*) ; //查询信息页面
void menu4_1(Node_p*);        //查询体检信息分页面 
void menu4_2(Node_i*);      //查询病历信息分页面 
void menu5(Node_p*,Node_i*);  //统计信息页面
Node_p * readFileBody(Node_p*,char*);  //读文件
Node_i* readFileIll(Node_i*,char*);   //读文件 
Node_p* writeFileBody(Node_p*,char*);   //写文件 
Node_i* writeFileIll(Node_i*,char*);   //写文件
int main()
{   	
	char pwd[7];   //6位密码
	int counter = 0;   //输入密码次数
	int flag = 0;  //密码初始码
	char initpwd[] = "521999";   //密码
	printf("请输入密码：");     
	for(int i=0;i<1000;i++)
	{
		scanf("%s",&pwd);
		counter++;
		if(counter+1<=4&&counter+1>0)
		{
			if(strcmp(pwd,initpwd)==0)
			{
				printf("欢迎来到学生健康管理系统\n");
			    break;                                                                                                                             
			}
			else
			{
				printf("密码错误。\n您还有%d次机会。\n",3-counter);	
			}
		}
		if(counter>=3&&strcmp(pwd,initpwd)!=0)
		{
			printf("密码全错。为了学生隐私，此账号已被锁定。请带好证件，到学生处解除限制。\n");
		}
	}
	char fname1[20] ="Body_FILE.dat";
	char fname2[20] ="Ill_FILE.dat";
	Node_p*phead1=creatHead1();
	Node_i*phead2=creatHead2();
	phead1  = readFileBody(phead1,fname1);
	phead2=readFileIll(phead2,fname2);
	menu(phead1,phead2);     
	phead1=writeFileBody(phead1,fname1);
	phead2=writeFileIll(phead2,fname2);
	release1(phead1);
	release2(phead2);
	return 0;
}


Node_p* creatHead1()       //建立头节点
{
	Node_p*phead1=(Node_p*)malloc(sizeof(Node_p));
	phead1->next=NULL;
	return phead1;
}
Node_i* creatHead2()
{
	Node_i*phead2=(Node_i*)malloc(sizeof(Node_i));
	phead2->next=NULL;
	return phead2;
}

Node_p*readFileBody(Node_p*phead1,char*fname1)       //读文件 
{	
     FILE *fp;         
     fp=fopen(fname1,"rb");
     while(1)
     {
         Node_p*pnew=(Node_p*)malloc(sizeof(Node_p)); 
         
         int count = fread(&pnew->data,1,sizeof(Node_p),fp);
         pnew->next=phead1->next;
         phead1->next=pnew;
         if(count==0)
         {
         	break;
		 }
	 }
	 fclose(fp);
return phead1;
}
Node_i*readFileIll(Node_i*phead2,char*fname2)       //读文件 
{	
     FILE *fp;
     fp=fopen(fname2,"rb");
     while(1)
     { 
         Node_i*pnew=(Node_i*)malloc(sizeof(Node_i)); 
        
         int count = fread(&pnew->data,1,sizeof(Node_i),fp);
         pnew->next=phead2->next;
         phead2->next=pnew;
         if(count==0)
         {
         	break;
		 }
	 }
	 fclose(fp);
return phead2;
}
Node_p* writeFileBody(Node_p*phead1,char*fname1)   //写文件
{
	FILE *fp;
    fp=fopen(fname1,"wb");
     Node_p*p=phead1->next;
     while(p)
     {
     	fwrite(&p->data,1,sizeof(Node_p),fp);
     	p=p->next;
	  } 
	fclose(fp);
	return phead1;  
}
Node_i* writeFileIll(Node_i*phead2,char*fname2)   //写文件
{
	FILE *fp;
    fp=fopen(fname2,"wb");
     Node_i*p=phead2->next;
     while(p)
     {
     	fwrite(&p->data,1,sizeof(Node_i),fp);
     	p=p->next;
	  } 
	fclose(fp);
	return phead2;  
}
void release1(Node_p*phead)    //释放链表
{
	Node_p*p=phead;
	while(p)
	{ 
		phead=phead->next;
		free(p);
		p=phead;
	}
	return ;
}
void release2(Node_i*phead)    //释放链表
{
	Node_i*p=phead;
	while(p)
	{ 
		phead=phead->next;
		free(p);
		p=phead;
	}
	return ;
}

void menu(Node_p*phead1,Node_i*phead2)  //主菜单
{
	while(1)
	{
		system("cls");   
		printf ("\t\t\t***欢迎使用课程信息管理系统**\n");
		printf ("\t\t\t****1 登记学生的健康信息****\n");
		printf ("\t\t\t****2 修改学生的健康信息****\n");
		printf ("\t\t\t****3 删除学生的健康信息****\n");
		printf ("\t\t\t****4 查询学生的健康信息****\n");
		printf ("\t\t\t****5 统计学生的健康信息****\n");
		printf ("\t\t\t****0 退出该系统****\n");
		int option;
		printf("请选择要进行的操作（0-5）：");
		scanf("%d",&option);
		system("cls");
		int a[6]={0,1,2,3,4,5};
		switch(option)
		{
			case 0:
				{
				
					printf("您已成功退出该系统");
					return ;
				}
	        case 1:
	        	{
	        	     menu1(phead1,phead2);
	        		break;
				}
			case 2:
				{
					menu2(phead1,phead2);
					break;
				}
			case 3:
				{
					menu3(phead1,phead2);
					break;
				}
			case 4:
				{
				menu4(phead1,phead2);
				break;
				}
			case 5:
				{
				menu5(phead1,phead2);
				break;
			}
		default :
		{
			printf("请重新输入\n"); 
				system("pause");
			continue;
		 } 
		}
		 	system("pause");
	}
}

void menu1(Node_p*phead1,Node_i*phead2)     //登记学生信息
{
	 while(1)
	 {
	 	system("cls");
	 	printf ("\t\t\t****1 登记学生的体检信息****\n");
	 	printf ("\t\t\t****2 登记学生的病历信息****\n");
	 	printf ("\t\t\t****0 返回****\n");
	 	int option;
	 	printf("请选择要进行的操作：");
	 	scanf("%d",&option);
	 	system("cls");
	 	switch(option)
	 	{
	 		case 0:
	 			return;
	 		case 1:
	 			{
	 			system("cls") ;
             	printf("录入学生体检信息");
	            printf("输入要录入的学生的个数 :");
	            int n ;
	            scanf("%d",&n);
	            phead1 =addAllBody(phead1,n);	
                printf("录入完成\n");                                                                                     
	 			break;    
				 }
		    case 2:
		    	{
		    	system("cls") ;
		    	printf("录入学生病历信息");
		    	printf("输入要录入的学生的个数 :");
		    	int n;
		    	scanf("%d",&n);
		    	phead2 =addAllill(phead2,n);
		    	printf("录入完成\n");
	
		    		break;
				}
				default :
		      {
			printf("请重新输入\n"); 
				system("pause");
			continue;
		     } 
		 }
		 system("pause");
	 }
}

void menu2(Node_p*phead1,Node_i*phead2)    //修改信息
{
	while(1)
	{
	system("cls");
	printf ("\t\t\t****1 修改学生的体检信息****\n");
	printf ("\t\t\t****2 修改学生的病历信息****\n");
	printf ("\t\t\t****0 返回****\n");
	int option;
	printf("请选择要进行的操作：");
	scanf("%d",&option);
	system("cls");
	switch(option)
	{
		case 0:
			{
				return ;
			} 
		case 1:
			{
				system("cls") ;
				int n;
				phead1=ReviseBodySno(phead1,n);
				printf("修改完成\n"); 
				break;
			}
		case 2:
			{
				system("cls") ;
				int n;
				phead2=ReviseIllSno(phead2,n);
			  	printf("修改完成\n");
				break;  
			}
		default :
		      {
			printf("请重新输入\n"); 
				system("pause");
			continue;
		     } 
	}
	system("pause");
	}	
}
Node_p* addAllBody(Node_p*phead1,int n)
{
	for(int i=0;i<n;i++)
	{
		Node_p*pnew=(Node_p*)malloc(sizeof (Node_p));
	    InputBody(pnew,n);
		Node_p *p=phead1;
		while(p->next)
		{
			p=p->next;
		}
		
		p->next=pnew;
		pnew->next=NULL;
	}

	return  phead1;
}
Node_i*addAllill(Node_i*phead2,int n)
{
	for(int i=0;i<n;i++)
	{
		Node_i*pnew=(Node_i*)malloc(sizeof(Node_i));
		Inputill(pnew,n);
		 Node_i*p=phead2;
		 while(p->next)
			   {
			   	p=p->next;
			   }
			   p->next=pnew;
			   pnew->next=NULL;
		}
	
	return phead2;
}
void InputBody(Node_p*p,int n)
{ 
    printf("\n");
	printf("\n学号：");
	scanf("%d",&p->data.sno);
	
	printf("\n性别(M/W)：");
	fflush(stdin);
	scanf("%s",&p->data.gender);
	
	printf("\n名字：");
	fflush(stdin);
	scanf("%s",&p->data.sname);
	
	printf("\n系别：");
	fflush(stdin);
	scanf("%s",&p->data.department);
	
	printf("\n年龄：");
	scanf("%d",&p->data.age);
	
	printf("\n身高：");
	scanf("%d",&p->data.tall);
	
	printf("\n体重：");
	fflush(stdin);
	scanf("%lf",&p->data.weight);
	
	printf("\n胸围：");
	fflush(stdin);
	scanf("%lf",&p->data.bust);
	while(1) 
	{
		printf("\n日期：");
	scanf("%d",&p->data.data);
	if(p->data.data>1e7&&p->data.data<1e8)
	{
		break;
	}
	else
	{
		printf("请重新输入："); 
	}
	 } 
	
	}
void Inputill(Node_i*p,int n)
{
	 printf("\n");
	 printf("\n学号：");
	 scanf("%d",&p->data.sno);
	 
	 printf("\n姓名：");
     fflush(stdin);
     scanf("%s",&p->data.sname);
     
	 printf("\n性别(M/W)：");
     fflush(stdin);
     scanf("%s",&p->data.gender);
     
	 printf("\n系别·：");
     fflush(stdin);
     scanf("%s",&p->data.department);
     
	 printf("\n诊断：");
    fflush(stdin);
    scanf("%s",&p->data.judge);
	printf("\n日期：");
    scanf("%d",&p->data.data);
}
Node_p* ReviseBodySno(Node_p*phead1,int n)      //根据学号修改体检信息 
{
	   
	int Sno;
	printf("请输入需要修改的学号："); 
	scanf("%d",&Sno);
	Node_p* p = phead1->next;
	while (p){
		if(p->data.sno==Sno)
		{
			InputBody(p,n);
		}
		p = p->next;
	}
	
     return phead1;
}
Node_i* ReviseIllSno(Node_i*phead2,int n)       //根据学号修改病历信息 
{
	int Sno;
	printf("输入学号：");
	scanf("%d",&Sno);
	Node_i* p =phead2->next;
	while (p)
	{
		if(p->data.sno==Sno)
		{
			Inputill(p,n);
		}
		p = p->next;
	}

	return phead2;
}
void menu3(Node_p*phead1,Node_i*phead2)    //删除信息 
{
	while(1)
	{
		system("cls");
		printf ("\t\t\t****1 删除学生的体检信息****\n");
		printf ("\t\t\t****2 删除学生的病历信息****\n");
		printf ("\t\t\t****0 返回****\n");
		int option;
		printf("请输入选择进行的操作："); 
		scanf("%d",&option) ;
		system("cls");
		switch(option)
		{
		
			case 0:
				{
					return ;
				}
			case 1:
				{
					system("cls") ;
					phead1=DeleteBodySno(phead1);
					break; 
			}
			case 2:		

				{
					system("cls");
					phead2=DeleteIllSno(phead2); 
					break;
				}
			default :
		      {
			    printf("请重新输入\n"); 
				system("pause");
			continue;
		     } 	
		}
       system("pause");
}

}
Node_p* DeleteBodySno(Node_p*phead1)     //根据学号删除信息 
{
	int Sno;
	char var;
	int flag=0;
	printf("请输入学号：");
	scanf("%d",&Sno);
	printf("是否要删除学号为%d的学生（Y/N)",Sno);
	fflush(stdin);
	scanf("%c",&var);
	Node_p* p = phead1;
	if(phead1->next==NULL)
	{
		return phead1;    
	 } 
	if(var=='N'||var=='n')
	{
		return phead1; 
	}
	while (p)
	{
		if(p->next->data.sno==Sno&&phead1->next!=NULL)
		{
		Node_p*ph=p->next;
			flag=1;
			if(p->next->next!=NULL)
		{
			p->next=p->next->next;
		}
		else
		{
			p->next=NULL;
		}
		free(ph);
		}
		p=p->next;
}
   if(flag==1)
   {
   	printf("删除成功"); 
   }
   else if(flag==0)
   {
   	printf("删除失败"); 
   }
	return phead1;
}
Node_i* DeleteIllSno(Node_i*phead2)      //根据学号删除信息 
{
	int Sno;
	char var;
	int flag=0;
	printf("请输入学号："); 
	scanf("%d",&Sno);
	printf("是否要删除学号为%d的学生（Y/N)",Sno);
	fflush(stdin);
	scanf("%c",&var);
	Node_i* p = phead2;
	if(phead2->next==NULL)
	{
		return phead2;    
	 }
		if(var=='N')
	{
		return phead2; 
	}
	while(p)
	{
		if(p->next->data.sno==Sno&&phead2->next!=NULL)
		{
		Node_i*ph=p->next;
		flag=1;
		if(p->next->next!=NULL)
		{
			p->next=p->next->next;
		}
		else
		{
			p->next=NULL;
		}
		free(ph);
		}
		
		p=p->next;
	}
	if(flag==1)
   {
   	printf("删除成功"); 
   }
   else if(flag==0)
   {
   	printf("删除失败"); 
   }
return phead2;
}
void menu4(Node_p*phead1,Node_i*phead2)   //查询学生的健康信息 
{
	while(1)
	{
		system("cls");
		printf("1 查询学生的体检信息\n");
		printf("2 查询学生的病历信息\n");
		printf("0 返回\n");
		int option;
		printf("输入进行的操作：");
		scanf("%d",&option);
		switch(option)
		{
			case 0:
				return ;
			case 1:
				{
		        menu4_1(phead1);
		        break; 
				}
			case 2:
				{
			   menu4_2(phead2);
			   break;
				}
			default :
		      {
			    printf("请重新输入\n"); 
				system("pause");
			continue;
		     } 
		 } 
		 system("pause");
	}
}
void menu4_1(Node_p*phead1) 
{
	while(1)
	{
		
		system("cls");
		printf("1 根据学号查询体检信息\n");
		printf("0 返回\n");
		int option;
		printf("输入进行的选择:");
		scanf("%d",&option);
		switch(option)
		{
			
			case 0:
				return ;
			case 1:
				{
					phead1=FindBodySno(phead1);
					
					break;
				}
				default :
		      {
			printf("请重新输入\n"); 
				system("pause");
			continue;
		     } 
		 } 
		 system("pause");
	 } 
}
Node_p* FindBodySno(Node_p* phead1)
{
	int Sno;
	printf("输入查找的学号：");
	scanf("%d",&Sno);
	Node_p* p = phead1->next;
	while(p)
	{
		if(p->data.sno==Sno)
		{
			printf("该学生的姓名为%s\n",p->data.sname);
			printf("该学生的性别为%s\n",p->data.gender);
			printf("该学生的系别为%s\n",p->data.department);
			printf("该学生的年龄为%d\n",p->data.age); 
			printf("该学生的身高为%d\n",p->data.tall);
			printf("该学生的体重为%lf\n",p->data.weight);
			printf("该学生的胸围为%lf\n",p->data.bust);
			printf("该学生的体检日期为%d\n",p->data.data);
		}
		p=p->next;
	}
	return phead1; 
}
void menu4_2(Node_i*phead2)
{
	int Sno;
	printf("输入查询的学号：") ;
	scanf("%d",&Sno);
	Node_i*p=phead2->next;
	while(p)
	{
		if(p->data.sno==Sno)
		{
			printf("该学生的姓名为%s\n",p->data.sname);
			printf("该学生的性别为%s\n",p->data.gender);
			printf("该学生的部门为%s\n",p->data.department);
			printf("该学生的病症为%s\n",p->data.judge);
			printf("该学生的日期为%d\n",p->data.data);
		}
		p=p->next;
	}
}
void menu5(Node_p*phead1,Node_i*phead2)     //统计 
{
	while(1)
	{
		system("cls");
		printf("1 统计学生的体检信息\n");
		printf("2 统计学生的病历信息\n") ;
		printf("0 返回\n");
		int option;
		printf("输入选择的操作：") ;
		scanf("%d",&option);
		switch(option)
		{
			case 0:
				return ;
			case 1:
				{
					phead1=CountBody(phead1);
					break; 
				}
			case 2:
				{
					phead2=CountIll(phead2); 
					break;
				}
			default :
		      {
			     printf("请重新输入\n"); 
				 system("pause"); 
			continue;
		     } 
		}
		  system("pause");
	}
}
Node_p* CountBody(Node_p*phead1)     //统计体检信息 
{
	while(1)
	{
		 system("cls");
	     printf("1  统计各个年龄的人数并计算平均值\n")  ;
		 printf("2  统计各个身高的人数并计算平均值\n") ;
		 printf("3  统计各个体重的人数并计算平均值\n");
		 printf("4  统计各个胸围的人数并计算平均值\n"); 
		 printf("0 返回");
		 int option;
		 printf("输入操作：\n");
		 scanf("%d",&option);
		 switch(option)
		 {
		 	case 0:
		 		{
		 		return phead1;
				 }
			case 1:
				{
					 phead1=CountBodyAge(phead1); 
					break;
				}
			case 2:
				{
					phead1=CountBodyTall(phead1);
					break;
				}
			case 3:
				{
					phead1=CountBodyWeight(phead1);
					break;
				}
			case 4:
				{
			    	phead1=CountBodyBust(phead1);
					break; 
				}
			default :
		      {
			     printf("请重新输入\n"); 
				 system("pause");
			continue;
		     } 
		 }
		 system("pause");
}
  return phead1;
}
Node_p* CountBodyAge(Node_p*phead1)     
{
	int Age;
	int number=0;	
	int ave=0; 
	int sum=0;
	int numberTotal=0;
	printf("输入想要统计的年龄：");
	scanf("%d",&Age) ;
	Node_p*p=phead1->next;
	while(p)
	{
		sum=sum+p->data.age;
		numberTotal++;
		if(p->data.age==Age)
		{
			number++;
		}
		p=p->next;
		ave=sum/numberTotal;
		
	}
    printf("年龄为%d的人有%d人，平均年龄为%d",Age,number,ave);
	return phead1;
}
Node_p* CountBodyTall(Node_p*phead1)
{
		int Tall;
		int number=0;
		float ave=0;
		int sum=0;
		int numberTotal=0;
		printf("输入想要统计的身高：");
		scanf("%d",&Tall);
		Node_p*p=phead1->next;
		while(p)
		{
			sum=sum+p->data.tall;
			numberTotal++;
			if(p->data.tall==Tall)
			{
				number++; 
			}
			p=p->next;
			ave=sum/numberTotal;
			
		}
		printf("身高为%d的人有%d人，平均身高为%f",Tall,number,ave);
		return phead1;
}
Node_p* CountBodyWeight(Node_p*phead1) 
{
	double Weight;
	int number=0;
	double ave=0;
	double sum=0;
	int numberTotal=0;
	printf("输入想要统计的体重：");
	scanf("%lf",&Weight);
	Node_p*p=phead1->next;
	while(p)
	{
		sum=sum+p->data.weight;
		numberTotal++;
		 
		if(p->data.weight==Weight)
		{
			number++; 
		}
		p=p->next;
		 ave=sum/numberTotal;
		 
	}
	printf("体重为%lf的学生有%d人，平均体重为%lf",Weight,number,ave);
	return phead1;
}
Node_p* CountBodyBust(Node_p*phead1)
{    
	  double Bust;
	  int number=0;
	  double ave=0;
	  double sum=0;
	  int numberTotal=0;
	  printf("输入想要统计的胸围：");
	  scanf("%lf",&Bust);
	  Node_p*p=phead1->next;
	  while(p)
	  {
	  	sum=sum+p->data.bust;
	  	numberTotal++;
	  	if(p->data.bust==Bust)
	  	{
	  		number++;
		  }
		  p=p->next;
		  ave=sum/numberTotal;
		  
	   } 
	   printf("胸围为%lf的学生有%d人，平均胸围为%lf",Bust,number,ave);
	   return phead1;
}
Node_i* CountIll(Node_i*phead2)     //统计病历信息 
{
	while(1)
	{
		system("cls");
		printf("1 统计各个病症每年增加的人数\n");
		printf("2 统计各个病症每年男女的人数\n"); 
		printf("3 统计各个病症的年平均增长值\n"); 
		printf("4 统计各个病症的年增长率\n");
		printf("5 统计各个部门的男女人数\n");
		printf("0 返回\n");
		int option;
		printf("输入操作：\n");
		scanf("%d",&option);
		switch(option)
		{ 
			case 0:
			{
				return phead2;
			}      
			case 1:
				{
					phead2=CountIll_improveJudge(phead2);
					break; 
				 } 
		   case 2:
		   	{
		   		phead2=CountIllGender(phead2);
		   		break;
			   }
			case 3:
				{
					phead2=CountIll_addNumber(phead2);
					break;
				}
			case 4:
			{
				phead2=CountIll_addRate(phead2);
				break;
			 } 
			case 5:
			{
				phead2=CountIll_DepartmentGender(phead2);
				break;
			 } 
		    default :
		      {
			     printf("请重新输入\n"); 
				 system("pause");
			continue;
		     } 
		 } 
		 system("pause");
	}
	return phead2;
}
Node_i* CountIll_improveJudge(Node_i*phead2)
{
	int number=0;
	char Judge[30];
	printf("输入统计的病症：");
	fflush(stdin);
	scanf("%s",&Judge);
	Node_i*p=phead2->next;
	while(p)
	{
		if(strcmp(p->data.judge,Judge)==0)
		{
			number++;
		}
		printf("病症为%s的人数有%d人",Judge[30],number);
	}
	return phead2;
}
Node_i* CountIllGender(Node_i*phead2)
{
	
	int numberM=0;
	int numberW=0;
	char Judge[30];
	printf("输入病症统计男女患病人数：");
	fflush(stdin);
	scanf("%s",&Judge[30]);
	Node_i* p=phead2->next;
	while(p)
	{
		if(strcmp(p->data.judge,Judge)==0&&strcmp(p->data.gender,"M")==0)
		{
			numberM++;
		}
		else if(strcmp(p->data.judge,Judge)==0&&strcmp(p->data.gender,"W")==0)
		{
			numberW++;
		}
		p=p->next;
	}
	printf("%s病症的男生有%d人,女生有%d人",Judge,numberM,numberW);
	  return phead2;
}
Node_i* CountIll_addNumber(Node_i*phead2)
{
	int number1=0;
	int number2=0;
	int Year; 
	printf("输入统计的年数： ");
	scanf("%d",&Year);
	Node_i* p=phead2->next;
	while(p)
	{ 
	       if((p->data.data)/10000==Year)
		   {
		   	number1++;
		   }
		   else if((p->data.data/1000)==Year-1)
		   {
		   	number2++;
		   }
		   	p=p->next;
	 } 

	printf("%d年增加人数为%d",Year,number1-number2);
	return phead2;
	
}
Node_i* CountIll_addRate(Node_i*phead2)
{
	int number1=0;
	int number2=0;
	int Year;
	float rate=0;
	printf("输入统计的年数：");
	scanf("%d",&Year);
	Node_i* p=phead2->next;
	while(p)
	{ 
	      if((p->data.data)/10000==Year)
		   {
		   	number1++;
		   }
		   else if((p->data.data/1000)==Year-1)
		   {
		   	number2++;
		   }
		   p=p->next;
	 }       
	
	printf("%d年增加率为%f",Year,(number1-number2)/number1);
	return phead2;
}
Node_i* CountIll_DepartmentGender(Node_i*phead2)
{
	int numberM=0;
	int numberW=0;
	char Department[20];  
	printf("输入统计的部门：");
	fflush(stdin);
	scanf("%s",Department);
	Node_i* p=phead2->next;
	while(p)
	{
		if(strcmp(p->data.department,Department)==0&&strcmp(p->data.gender,"M")==0)
		{
			numberM++;
		}
		else if(strcmp(p->data.department,Department)==0&&strcmp(p->data.gender,"W")==0)
		{
			numberW++; 
		}
		p=p->next; 
	}
	printf("%s部门的男生有%d人,女生有%d人",Department,numberM,numberW);
	return phead2; 
}
